MySQL 由於效能好、低成本、穩定性夠,對於中小企業來說是最好的選擇,目前分為可免費使用的 社群版本(Community Edition),以及需要授權費用的 標準版(Standard Edition)、企業版(Enterprise Edition)、電信營運版(Cluster Carrier Grade Edition),關於版本功能詳細資訊可參考 MySQL 授權版本功能比較。以下為 MySQL 檔案分享伺服器實作環境:
* OS: CentOS 6.0 (32 bit)
* MySQL 套件資訊: mysql-server-5.1.52-1.el6_0.1.i686
* MySQL 設定檔: /etc/my.cnf
* IPTables 防火牆: TCP 協定 Port 3306
* SELinux 權限: mysqld_db_t
----- 安裝 MySQL 檔案分享套件 -----
請使用 yum 指令搭配 MySQL 套件名稱 mysql-server 即可進行套件安裝。
#yum -y install mysql-server //安裝 MySQL 套件
#rpm -qa mysql-server //查詢 MySQL 套件版本
mysql-server-5.1.52-1.el6_0.1.i686
#rpm -ql mysql //查詢 MySQL 設定檔路徑
/usr/bin/msql2mysql
...略...
----- 設定 IPTables 防火牆規則 -----
MySQL 資料庫服務屆時啟動時會 TCP 協定 Port 3306,因此必須修改 IPTables 防火牆規則以便等一下進行測試,請修改 IPTables 防火牆規則設定檔**「/etc/sysconfig/iptables」**加上允許相關 Port 號的規則,修改防火牆規則後請使用指令「service iptables restart」來重新啟動防火牆服務,以便防火牆規則套用生效,並且使用「service iptables status」指令來確定目前防火牆規則是否有允許相關 Port 號。
#vi /etc/sysconfig/iptables //修改防火牆規則(加入如下六行)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
#service iptables restart //重新啟動防火牆服務
#service iptables status | grep 3306 //查看防火牆規則是否套用生效
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306
#chkconfig mysqld on //開機自動啟動 MySQL 服務
----- 修改 MySQL 設定檔 -----
接著修改 MySQL 設定檔**「/etc/my.cnf」,主要為修改資料庫預設存放路徑「datadir」的設定,將資料庫存放路徑由預設的「/var/lib/mysql」修改至「/home/db」**掛載點,下列僅列出設定檔需要修改的地方其預設值及修改後的內容:
#vi /etc/my.cnf //修改 MySQL 設定檔
datadir=/var/lib/mysql //預設值,資料庫預設存放路徑
datadir=/home/db //修改後
#mkdir /home/db //建立資料夾
----- 修改 SELinux 設定值 -----
修改 SELinux 安全機制的設定值,因為將 MySQL 資料庫預設存放路徑由 「/var/lib/mysql」 修改至 「/home/db」,因此新的資料夾其 SELinux 安全機制的權限勢必與原來的資料夾不同,若不進行修改的話屆時啟動 MySQL 服務時便可能會因為 SELinux 權限問題造成無法啟動 MySQL 服務的狀況。
#ls -dZ /var/lib/mysql /home/db
drwxr-xr-x. root root unconfined_u:object_r:home_root_t:s0 /home/db
drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 /var/lib/mysql
接著透過「semanage fcontext -a -t」指令配合 SELinux 權限**「mysqld_db_t」**,指定「/home/db」資料夾設定此權限為「SELinux預設權限」,之後使用「restorecon -Rv」指令把資料夾還原至剛才設定的 SELinux 預設權限,若執行 semanage 指令發現系統中沒有此一指令請安裝 policycoreutils-python 套件即可(yum -y install policycoreutils-python)。
#semanage fcontext -a -t mysqld_db_t "/home/db(/.*)?" //設定 SELinux 預設權限
#restorecon -Rv /home/db //還原 SELinux 權限
#chown mysql:mysql /home/db //設定資料夾權限
#ls -dZ /var/lib/mysql /home/db //查看資料夾 SELinux 權限
drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 /home/db
drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 /var/lib/mysql
----- 啟動 MySQL 服務 -----
完成修改 SELinux 安全機制權限設定後,我們可以放心啟動 MySQL 相關服務,請使用指令「service mysqld start」來啟動 MySQL 服務,並且於服務啟動後使用「netstat」指令來查看系統是否開啟了相關 Port 號,以及使用「ps」指令來查看相關執行序是否運作。
#service mysqld start //啟動 MySQL 服務
Initializing MySQL database: Installing MySQL system tables...
...略...
Starting mysqld: [ OK ]
#netstat -tunpl |grep :3306 //查看是否開啟 Port 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 6298/mysqld
#ps aux |grep mysqld
root 6209 0.0 0.1 5080 1356 pts/0 S 15:20 0:00 /bin/sh /usr/bin/mysqld_safe
...略...
----- 設定 MySQL 管理密碼 -----
MySQL 資料庫管理者預設帳號名稱為**「root」(請別跟 CentOS 作業系統的超級管理者 root 帳號搞混),並且可以透過「mysqladmin」指令來設定其密碼,下列操作為將 MySQL 資料庫管理者密碼設定為「123456」**,若日後您需要修改管理密碼,則在指令「password」前面加上「-p」參數即可進行變更。
#mysqladmin -u root password '123456' //設定 MySQL 管理密碼
#mysql -u root -p //登入資料庫
Enter password: //輸入管理密碼
...略...
mysql> show databases; //查看資料庫清單
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql> exit //離開資料庫
Byet
(上一篇)邁向 RHCE 之路 (Day29) - Samba 檔案分享伺服器
邁向 RHCE 之路系列文章連結
很榮幸第一次參加鐵人賽(也完成了!!),雖然在這三十天分享文章中在文字限制範圍內盡量分享心得,不過事實上還有許多項目及內容無法一一說明,最後仍然希望這些文章能對於 RHEL/CentOS 作業系統有興趣的朋友一些參考價值。
出了社會才知道,為什麼老板和資訊主管的頭腦和我們想的不一樣,不用錢的軟體不用,反而花大錢去買,因一個人要做2人工作,又要按時下班,這時其他的都不重要了。